package com.indusfo.spc.service;

import com.indusfo.spc.pojo.Role;
import com.indusfo.spc.pojo.User;
import com.indusfo.spc.vo.JSONObject;

import java.util.List;

/**
 * 用户信息业务层接口
 * 
 * @author xiet 2018年11月23日 下午2:41:42
 */
public interface UserService {

	/**
	 * 	删除用户信息（1启用，2删除，3停用）
	 * 
	 * @param userIds
	 * @param dataState
	 * @return
	 */
	JSONObject deleteUser(Integer[] userIds, Integer dataState);

	/**
	 * 	查询用户信息
	 * 
	 * @param user
	 * @return
	 */
	JSONObject queryUser(User user);

	/**
	 * 	查询用户信息  部门 用户表
	 *
	 * @param user
	 * @return
	 */
	JSONObject queryUserDep(User user);

	/**
	 * 	新增用户信息
	 * @param user
	 * @return
	 */
	JSONObject insertUser(User user);
	
	/**
	 * 	修改用户信息
	 * @param user
	 * @return
	 */
	JSONObject updateUser(User user);
	/**
	 * 通过用户名查询
	 * @param user
	 * @return
	 */
	List<User> queryU(User user);

	/**
	 * @Method loginUser
	 * @Author 熊冰
	 * @Version  1.0
	 * @Description
	 * @param user
	 * @Return com.indusfo.spc.vo.JSONObject
	 * @Exception
	 * @Date 2019/8/24 15:03
	 * 登陆
	 */
	JSONObject loginUser(User user);

	JSONObject treeMenu(Integer userId);

	JSONObject arrayMenu(Integer userId);

	JSONObject listMenu(Integer userId);

	/**
	 * @Method arrayRole
	 * @Author 熊冰
	 * @Version  1.0
	 * @Description
	 * @param roleId
	 * @Return com.indusfo.spc.vo.JSONObject
	 * @Exception 角色  权限数组
	 * @Date 2019/9/2 8:58
	 */
	JSONObject arrayRole(Integer roleId);

	/**
	 * @Method listRole
	 * @Author 熊冰
	 * @Version  1.0
	 * @Description
	 * @param roleId
	 * @Return com.indusfo.spc.vo.JSONObject
	 * @Exception 角色  权限列表
	 * @Date 2019/9/2 8:58
	 */
	JSONObject listRole(Integer roleId);

	/**
	 * @author: louk
	 * @Description: 用户批量新增
	 * @date: 2019/11/5 16:13
	 *
	 */
	JSONObject insertListUser(List<User> userList);

	/*
	密钥加密
  */
	String encryptPassword(String userCode, String password, String salt);

  /**
   * 重置密码
   *
   */
  JSONObject resetPwd(User user);

  /*
  根据登录账户查询用户
  */
  User selectUserBycode(String uesrCode);

  JSONObject selectByRole(Role role);

  List<User> getUserCode(String userCode);

  User findUserById (Integer userId);
}
